
package ucab.desarrollo.viajesbook.actions;


import java.util.Map;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import java.util.Iterator;
import java.util.List;
import java.util.StringTokenizer;
import ucab.desarrollo.viajesbook.AppContext;
import ucab.desarrollo.viajesbook.beans.Usuario;
import ucab.desarrollo.viajesbook.negocio.IUsuarioBO;
import ucab.desarrollo.viajesbook.negocio.UsuarioBO;

/**
 *
 * @author isak
 */

public class BuscarAmigoAction extends ActionSupport
{

    private String amigo;
    private List amigosExistentesEnBD;
    private String mensaje;
    private int idusuario;
    private String ERROR_INTERNO;
    /**
     * Se ejecuta la accion de buscar amigo dentro del sistema.
     * @return
     */
    @Override
    public String execute()
    {
        Usuario usuario = (Usuario)AppContext.getApplicationContext().getBean("usuario");
        StringTokenizer token = new StringTokenizer(amigo);        
        usuario.setUsuarionombre(token.nextToken());
        int cantidadNombres = token.countTokens();
        IUsuarioBO negocio = (UsuarioBO)AppContext.getApplicationContext().getBean("usuarioBO");
        if(cantidadNombres != 0)
        {
            usuario.setUsuarioappellido(token.nextToken());            
            setAmigosExistentesEnBD(negocio.buscarAmigoNomApe(usuario));

        }
        else
        {
            negocio.buscarAmigoNom(usuario);
            setAmigosExistentesEnBD(negocio.buscarAmigoNom(usuario));
            
        }

        if(getAmigosExistentesEnBD()== null)
        {
            mensaje = "NO Existen Usuarios con esos Datos";
            return INPUT;
            
        }

        mensaje="";
        return INPUT;


    }

//    @Override
//    public void validate() {
//        if (getAmigo().length() == 0)
//        {
//           addFieldError("amigo", "Debe indicar el nombre del amigo solicitado");
//        }
//    }

    /**
     * @return the amigo
     */
    public String getAmigo() {
        return amigo;
    }

    /**
     * @param amigo the amigo to set
     */
    public void setAmigo(String amigo) {
        this.amigo = amigo;
    }

    /**
     * @return the amigosExistentesEnBD
     */
    public List getAmigosExistentesEnBD() {
        return amigosExistentesEnBD;
    }

    /**
     * @param amigosExistentesEnBD the amigosExistentesEnBD to set
     */
    public void setAmigosExistentesEnBD(List amigosExistentesEnBD) {
        this.amigosExistentesEnBD = amigosExistentesEnBD;
    }

    /**
     * @return the mensaje
     */
    public String getMensaje() {
        return mensaje;
    }

    /**
     * @param mensaje the mensaje to set
     */
    public void setMensaje(String mensaje) {
        this.mensaje = mensaje;
    }

    /**
     * recorre la lista y devuelve el usuario con el mismo id
     * @param lista
     * @return
     */
    public Usuario obtenerUsuarioSolicitado(List lista)
    {
        Usuario objeto=null;
        
        for (Iterator it = lista.iterator(); it.hasNext();) {
            Object object = it.next();
            objeto = (Usuario) object;
            if(objeto.getIdusuario()==getIdusuario()){
                break;
            }
        }
        return objeto;
    }
    
        /**
     * actualizar el usuario modificado en la bd
     * @return
     */
    public String  solicitar() {
         String destino = INPUT;
         Map session = ActionContext.getContext().getSession();
         Usuario usuario = (Usuario)session.get("usuario");
         UsuarioBO negocio = (UsuarioBO)AppContext.getApplicationContext().getBean("usuarioBO");
         Usuario solicitado = (Usuario)AppContext.getApplicationContext().getBean("usuario");

         solicitado.setIdusuario(idusuario);
         try
         {
            setMensaje(negocio.solicitarAmistad(usuario, solicitado));
            destino =  SUCCESS;
         } catch (Exception e)
         {
             destino = ERROR_INTERNO;
             setMensaje("Ha habido una excepcion en el Sistema: " + e.getMessage());
         }
         finally
         {
             return destino;
         }
      }

            /**
     * confirmar la amistad del usuario 
     * @return
     */
    public String  confirmar() {
         String destino = INPUT;
         Map session = ActionContext.getContext().getSession();
         Usuario usuario = (Usuario)session.get("usuario");
         UsuarioBO negocio = (UsuarioBO)AppContext.getApplicationContext().getBean("usuarioBO");
         Usuario confirmado = (Usuario)AppContext.getApplicationContext().getBean("usuario");

         confirmado.setIdusuario(idusuario);
         try
         {
            setMensaje(negocio.confirmarAmistad(confirmado, usuario));
            destino =  SUCCESS;
         } catch (Exception e)
         {
             destino = ERROR_INTERNO;
             setMensaje("Ha habido una excepcion en el Sistema: " + e.getMessage());
         }
         finally
         {
             return destino;
         }
      }



    /**
     * @return the idusuario
     */
    public int getIdusuario() {
        return idusuario;
    }

    /**
     * @param idusuario the idusuario to set
     */
    public void setIdusuario(int idusuario) {
        this.idusuario = idusuario;
    }

    


    
}
